const { Admin } = require("../modules/adminsModels");
const { SalesPerson } = require("../modules/salesPersonModels");
const jwt = require("jsonwebtoken");
const { TOKEN_KEY } = require("../utils/const");
//登录
async function login(req, res, next) {
  console.log(111111);
  // console.log(req.body);
  const { adminName, password } = req.body;
  const data = await Admin.find({ adminName: adminName });
  console.log(data);
  // const data2 = await SalesPerson.find({ salesName: adminName })
  if (data.length > 0) {
    //生成token
    const token = jwt.sign(
      { adminName },//需要保存的用户信息
      TOKEN_KEY,//混淆的编码字符串,自己随便写
      { expiresIn: 60 * 60 }//token的有效期（时间单位是：s）
    );
    res.send({
      msg: "登录成功",
      status: 1,
      token,
      data
    })
  }
  // else if (data2.length > 0) {
  //   const token = jwt.sign(
  //     { adminName },
  //     TOKEN_KEY,
  //     { expiresIn: 60 * 60 }
  //   );
  // res.send({
  //   msg: "登录成功",
  //   status: 1,
  //   token,
  //   data:data2
  // })
  // } 
  else {
    res.send({
      msg: "登陆失败",
      type: "LOGIN_FAILED",
      status: 0
    })
  }
}
//判断是否登录
async function isLogin(req, res) {
  //如果执行该方法，证明token是有效的（验证通过）
  const auto = req.get("Authorization");//获取请求头中的token字符串
  // console.log(auto);
  const token = auto.split(" ")[1];
  // console.log(token);
  //解码
  const data = jwt.verify(token, TOKEN_KEY);//讲token和之间的加密字符串同时传入verify进行解码
  // console.log(data);
  res.send({
    status: 1,
    message: "用户已登录",
    data: data.adminName
  })
}
//添加管理员
async function addAdmins(req, res) {
  const { adminName, password, power, state } = req.body;
  const data = await Admin.find({ adminName, password });
  if (data.length == 0) {
    Admin.create({ adminName, password, power, state });
    res.send({
      status: 1,
      message: '管理员添加成功',
      data
    })
  } else {
    res.send({
      status: 0,
      message: '管理员添加失败'
    })
  }
}
//获取管理员
async function getAdmins(req, res) {
  const data = await Admin.find({ power: 1, state: "common" })
  if (data.length > 0) {
    res.send({
      status: 1,
      message: '管理员数据请求成功',
      data
    })
  } else {
    res.send({
      status: 0,
      message: '管理员数据请求失败'
    })
  }
}
//删除管理员
async function deleteAdmins(req, res) {
  const { _id } = req.body;
  const data = await Admin.find({ _id })
  if (data.length > 0) {
    Admin.updateMany({ _id }, { state: "down" }, function (err) { })
    res.send({
      status: 1,
      message: '删除成功',
      data
    })
  } else {
    res.send({
      status: 0,
      message: '删除失败'
    })
  }
}
//更新管理员数据
async function updataAdmins(req, res) {
  const { _id, adminNme, password, state } = req.body;
  const data = await Admin.find({ _id });
  console.log(data.length);
  if (data.length > 0) {
    Admin.updateMany({ _id }, { adminNme, password, state }, function (err) { });
    res.send({
      status: 1,
      message: '修改成功'
    })
  } else {
    res.send({
      status: 0,
      message: '修改失败'
    })
  }
}
module.exports = { login, isLogin, addAdmins, getAdmins, deleteAdmins, updataAdmins };